<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <button class="button1">点击一下</button>
    <script>
        // var getTimeStamp = function() {
        //     var timeStamp = new Date().getTime()
        //     getTimeStamp = function() {
        //         return timeStamp
        //     }
        //     return getTimeStamp()
        // }
        // console.log(getTimeStamp())
        // console.log(getTimeStamp())
        // console.log(getTimeStamp())
        // console.log(getTimeStamp())
        // console.log(getTimeStamp())
        // console.log(getTimeStamp())

        // 定义：
        // 惰性加载表示函数执行的分支只会在函数第一次调用的时候执行，
        // 在第一次调用的过程中，该函数被覆盖为另一个按照合适方式执行的函数，
        // 这样任何对原函数的调用就不用再经过执行的分支了

        // 使用场景
        // 我们定义一个函数根据参数去决定他的作用，当我们第一次调用后，
        // 就重写这个函数，之后再调用就是重写之后的，函数作用会在第一次调用后，
        // 变成确定的


        function addEvent(el, type, fn, capture) {
            if (el.addEventListener) {
                addEvent = function(el, type, fn, capture) {
                    console.log(el, type, fn, capture)
                    el.addEventListener(type, function() {
                        fn.call(el)
                    })
                }
            } else if (el.attachEvent) {
                addEvent = function(el, type, fn) {
                    fn.call(el)
                }
            } else {
                addEvent = function(el, type, fn) {
                    el['on' + type] = fn
                }
            }
            addEvent(el, type, fn, capture)
        }
        var oBtn = document.getElementsByClassName('button1')[0]
        addEvent(oBtn, 'click', btnClick, false)

        function btnClick() {
            console.log('111')
        }
    </script>
</body>

</html>